home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
The World of Computer Software.iso
/
mbase1.zip
/
MBDEMO.PRG
< prev
next >
Wrap
Text File
|
1992-12-17
|
13KB
|
560 lines
*:*********************************************************************
*:
*: Program: MBDEMO.PRG
*:
*: System: MAILbase Program
*: Author: Thomas D. Stubbs
*: Copyright (c) 1992 MAILbase
*: Last modified: 12/17/92 13:00
*:
*: Screen functions used in this demo courtesy
*: Jeff B. Davis, Davis Consulting
*:
*:
*:*********************************************************************
SET SCOREBOARD OFF
SET Cursor OFF
SET MESSAGE TO 20 CENTER
SET COLOR TO N/W,GR+/B
@ 0,0 CLEAR TO 0,79
@ 0,1 SAY 'Mbase v2.60 (c) Copyright 1992 MAILbase'
SET COLOR TO W+/B
fillscrn(1,0,23,79,'░')
SET COLOR TO N/W
@ 24,0 CLEAR TO 24,79
@ 24,1 SAY 'Enter=Select Option │ ESC=Exit │ '
MAINSCRN=SAVESCREEN(0,0,24,79)
MAIN_OP=1
CITY=SPACE(28)
ZIP=SPACE(5)
STATE=' '
STATENM=SPACE(40)
DO WHILE .T.
MKWINDOW(4,28,12,51,'D')
MKWINDOW(19,22,21,57)
@ 6,31 PROMPT " CITY -> ZIP " MESSAGE "List Zip Codes for a City"
@ 7,31 PROMPT " ZIP -> CITY " MESSAGE "List City Names for a Zip Code"
@ 8,31 PROMPT " ZIP -> STATE " MESSAGE "Return State for a Zip Code"
@ 9,31 PROMPT " STATE -> ABBR " MESSAGE "Return State Abbreviation"
@ 10,31 PROMPT " ABBR -> STATE " MESSAGE "Return Fullname for Abbr."
MENU TO MAIN_OP
RESTSCREEN(0,0,24,79,MAINSCRN)
DO CASE
CASE LASTKEY()=27
EXIT
CASE LASTKEY()=28
CASE MAIN_OP=1
DO DEMO1
CASE MAIN_OP=2
DO DEMO2
CASE MAIN_OP=3
DO DEMO3
CASE MAIN_OP=4
DO DEMO4
CASE MAIN_OP=5
DO DEMO5
ENDCASE
RESTSCREEN(0,0,24,79,MAINSCRN)
ENDDO
SET COLOR TO N/W
MkWindow( 5, 7, 13, 73)
@ 6,28 say "Thank You for using the:"
@ 8,25 say "MAILbase Library for Clipper Demo"
@ 9,20 say "(c) '1992 MAILbase. All rights reserved."
@ 10,27 say "Written by Thomas D. Stubbs"
@ 12,24 say "Mail your order for $95.00 today!"
Tone( 300, .1 )
Inkey(0)
Set Color to
Clear
Set Color to n/w
@ 0, 0
@ 0, 11 say "Mbase v2.60 (c)1992 MAILbase. All rights reserved"
Set Color to
@ 2, 0 Say ""
Set Curs ON
CloseMbase()
Clear ALL
Quit
*****************************
PROCEDURE DEMO1
WINDOW1=MKWINDOW(9,15,13,65)
@ 10,18 SAY "Enter a City Name:" GET CITY PICTURE "@K"
@ 12,18 SAY "Enter a State abbreviation:" GET STATE PICTURE "@K!!" VALID (IsState(STATE) .OR. EMPTY(STATE))
@ 12,COL()+1 SAY "(optional)"
SET CURSOR ON
READ
SET CURSOR OFF
KLWINDOW(WINDOW1)
IF LASTKEY()=27
RETURN
ENDIF
DECLARE ZIPS[1000],CTYPE[1000],ZTYPE[1000]
RET_VAL=City2Zip(CITY,ZIPS,CTYPE,ZTYPE,STATE)
DO CASE
CASE RET_VAL>0
CITY_STR=ALLTRIM(CITY)+IIF(!EMPTY(STATE),", "+STATE,"")
WINDOW1=MKWINDOW(2,10,5,46)
@ 3,17 SAY "There are "+LTRIM(STR(RET_VAL,3,0))+" zips for:"
oldCOLOR=SETCOLOR("B/W")
@ 4,26-LEN(CITY_STR)/2 SAY CITY_STR
SETCOLOR(oldCOLOR)
DECLARE ZT[4],ZTC[4]
ZT[1]="g"
ZT[2]="p"
ZT[3]="u"
ZT[4]="a"
ZTC[1]=0
ZTC[2]=0
ZTC[3]=0
ZTC[4]=0
FOR X=1 TO RET_VAL
ZIPS[X]=' '+ZIPS[X]+" │ "+ZT[ZTYPE[X]]+"│"+IIF(CTYPE[X]<32,STR(CTYPE[X],2,0)," *")
ZTC[ZTYPE[X]]=ZTC[ZTYPE[X]]+1
NEXT
WINDOW2=MKWINDOW(8,10,14,46)
@ 8,18 SAY "Zip type count"
@ 10,16 SAY "(g) General Zip...."+STR(ZTC[1],3,0)
@ 11,16 SAY "(p) PO Box Only...."+STR(ZTC[2],3,0)
@ 12,16 SAY "(u) Unique Zip....."+STR(ZTC[3],3,0)
@ 13,16 SAY "(a) APO/FPO........"+STR(ZTC[4],3,0)
WINDOW3=MKWINDOW(17,10,21,46)
@ 18,15 SAY "Press Enter on an element"
@ 19,15 SAY "to see alternate names if"
@ 20,15 SAY "available (type>1)"
WINDOW4=MKWINDOW(2,57,IIF(RET_VAL>16,20,5+RET_VAL),71)
@ 2,57 SAY "┌───────┬──┬──┐"
@ 3,57 SAY "│ ZIP │ZT│CT│"
@ 4,57 SAY "├───────┼──┼──┤"
@ 24,45 SAY "│ZT=Zip Type Code│CT=City Type Code│"
ACHOICE(5,58,IIF(RET_VAL>14,19,5+RET_VAL),70,ZIPS,.T.,"LOOKUP1")
CASE RET_VAL=0
TONE(300,1)
TONE(300,1)
TONE(300,1)
WINDOW3=MKWINDOW(17,10,21,46)
@ 18,15 SAY "There were no cities names"
@ 19,15 SAY "found matching your input "
@ 20,15 SAY " (press any key)"
INKEY(0)
CASE RET_VAL<0
WINDOW3=MKWINDOW(17,10,21,46)
@ 18,13 SAY "An error occurred during search"
@ 19,18 SAY "Error # was "+STR(MbaseErr(),2,0)
@ 20,15 SAY " (press any key)"
INKEY(0)
ENDCASE
RETURN
*****************************
PROCEDURE DEMO2
WINDOW1=MKWINDOW(9,30,13,50)
@ 10,32 SAY "Enter a Zip Code:"
@ 11,38 GET ZIP
SET CURSOR ON
READ
SET CURSOR OFF
KLWINDOW(WINDOW1)
IF LASTKEY()=27
RETURN
ENDIF
DECLARE CITIES[30],ZTYPE[30]
RET_VAL=Zip2City(ZIP,CITIES,ZTYPE)
DO CASE
CASE RET_VAL>0
WINDOW1=MKWINDOW(2,5,5,31)
@ 3,7 SAY "There are "+LTRIM(STR(RET_VAL,2,0))+" cities for:"
oldCOLOR=SETCOLOR("B/W")
@ 4,15 SAY ZIP
SETCOLOR(oldCOLOR)
DECLARE ZT[4],ZTC[4]
ZT[1]="g"
ZT[2]="p"
ZT[3]="u"
ZT[4]="a"
ZTC[1]=0
ZTC[2]=0
ZTC[3]=0
ZTC[4]=0
FOR X=1 TO RET_VAL
CITIES[X]=' '+LEFT(CITIES[X]+SPACE(28),28)+"│ "+ZT[ZTYPE[X]]
ZTC[ZTYPE[X]]=ZTC[ZTYPE[X]]+1
NEXT
WINDOW2=MKWINDOW(8,5,14,31)
@ 8,11 SAY "Zip type count"
@ 10,7 SAY "(g) General Zip..."+STR(ZTC[1],2,0)
@ 11,7 SAY "(p) PO Box Only..."+STR(ZTC[2],2,0)
@ 12,7 SAY "(u) Unique Zip...."+STR(ZTC[3],2,0)
@ 13,7 SAY "(a) APO/FPO......."+STR(ZTC[4],2,0)
WINDOW3=MKWINDOW(17,5,21,31)
@ 18,7 SAY "Press Enter on a city"
@ 19,7 SAY "name to see city type"
@ 20,7 SAY "code for this zip..."
WINDOW4=MKWINDOW(2,39,IIF(RET_VAL>16,20,5+RET_VAL),72)
@ 2,39 SAY "┌─────────────────────────────┬──┐"
@ 3,39 SAY "│ City Name │ZT│"
@ 4,39 SAY "├─────────────────────────────┼──┤"
@ 24,55 SAY "│ZT=Zip Type Code│"
ACHOICE(5,40,IIF(RET_VAL>14,19,5+RET_VAL),71,CITIES,.T.,"LOOKUP2")
CASE RET_VAL=0
TONE(300,1)
TONE(300,1)
TONE(300,1)
WINDOW3=MKWINDOW(17,5,21,31)
@ 18,7 SAY "This zip code has not"
@ 19,7 SAY "been assigned by USPS"
@ 20,7 SAY " (press any key)"
INKEY(0)
CASE RET_VAL<0
WINDOW3=MKWINDOW(17,5,21,31)
@ 18,7 SAY "An error occurred during"
@ 19,7 SAY "search. Error # was "+STR(MbaseErr(),2,0)
@ 20,7 SAY " (press any key)"
INKEY(0)
ENDCASE
RETURN
*************************
PROCEDURE DEMO3
WINDOW1=MKWINDOW(9,20,15,60)
@ 10,32 SAY "Enter a Zip Code:"
@ 11,38 GET ZIP
SET CURSOR ON
READ
SET CURSOR OFF
IF LASTKEY()=27
RETURN
ENDIF
@ 13,33 SAY "State is: "
oldCOLOR=SETCOLOR("B/W")
STATEA=Zip2State(ZIP)
STATEN=StateName(STATEA)
@ ROW(),COL() SAY STATEA
@ ROW()+1,40-LEN(STATEN)/2 SAY STATEN
SETCOLOR(oldCOLOR)
INKEY(0)
KLWINDOW(WINDOW1)
RETURN
****************************
PROCEDURE DEMO4
WINDOW1=MKWINDOW(9,18,15,62)
@ 10,29 SAY "Enter a Full State Name:"
@ 11,20 GET STATENM PICTURE "@K"
SET CURSOR ON
READ
SET CURSOR OFF
IF LASTKEY()=27
RETURN
ENDIF
STATEA=StateAbbr(STATENM)
IF LEN(STATEA)<2
@ 13,28 SAY "State name was not found"
ELSE
@ 13,28 SAY "State abbreviation is: "
oldCOLOR=SETCOLOR("B/W")
@ 13,COL() SAY STATEA
SETCOLOR(oldCOLOR)
ENDIF
INKEY(0)
KLWINDOW(WINDOW1)
RETURN
****************************
PROCEDURE DEMO5
WINDOW1=MKWINDOW(9,20,14,60)
@ 10,23 SAY "Enter a State abbreviation:" GET STATE VALID (IsState(STATE) .OR. EMPTY(STATE))
SET CURSOR ON
READ
SET CURSOR OFF
IF LASTKEY()=27
RETURN
ENDIF
STATEN=StateName(STATE)
oldCOLOR=SETCOLOR("B/W")
@ 12,40-LEN(STATEN)/2 SAY STATEN
SETCOLOR(oldCOLOR)
INKEY(0)
KLWINDOW(WINDOW1)
RETURN
****************************
FUNCTION LOOKUP1
PARAMETER Stat_Msg, Element, Rel_Pos
Do Case
Case Stat_Msg = 0 && IDLE
Return( 2 )
Case Stat_Msg = 1 && PAST TOP
Tone( 100, .1 )
Return( 2 )
Case Stat_Msg = 2 && PAST END
Tone( 100, .1 )
Return( 2 )
Case LASTKEY()=27
RETURN(0)
CASE LASTKEY()=13
WINDOWa=MKWINDOW(17,10,21,46)
IF CTYPE[ELEMENT]=1
@ 18,16 SAY "This is a 'dominant' name"
@ 19,17 SAY "for this zip code, no "
@ 20,17 SAY "alternate is available"
oldCOLOR=SETCOLOR("B/W")
CITY_STR=CityAKA(CITY,SUBSTR(ZIPS[ELEMENT],2,5),1)
@ ROW()+1,26-LEN(CITY_STR)/2 SAY CITY_STR
SETCOLOR(oldCOLOR)
ELSE
CITYCOUNT=1
DO CASE
CASE CTYPE[ELEMENT]=2
@ 18,17 SAY "Abbreviation of dominant"
CASE CTYPE[ELEMENT]=3
@ 18,16 SAY "Dominant has abbreviation"
CASE CTYPE[ELEMENT]=4
@ 18,15 SAY "Equally interchangeble with"
CASE CTYPE[ELEMENT]=5
@ 18,18 SAY "Has dominate alternate"
CASE CTYPE[ELEMENT]=6
@ 18,15 SAY "Abbreviation of non-dominant"
CITYCOUNT=2
CASE CTYPE[ELEMENT]=7
@ 18,14 SAY "non-dominant has Abbreviation"
CITYCOUNT=2
CASE CTYPE[ELEMENT]=17
@ 18,15 SAY "Abbreviation OR non-dominant"
CASE CTYPE[ELEMENT]=32
@ 18,19 SAY "(Unapproved name)"
@ 19,18 SAY "Should replace with:"
OTHERWISE
@ 18,17 SAY "(UNKNOWN CITY TYPE CODE)"
CITYCOUNT=0
ENDCASE
oldCOLOR=SETCOLOR("B/W")
DO WHILE CITYCOUNT>0
CITY_STR=CityAKA(CITY,SUBSTR(ZIPS[ELEMENT],2,5),CITYCOUNT)
@ ROW()+1,26-LEN(CITY_STR)/2 SAY CITY_STR+IIF(CITYCOUNT=2," (dom)","")
CITYCOUNT=CITYCOUNT-1
ENDDO
SETCOLOR(oldCOLOR)
ENDIF
INKEY(0)
KLWINDOW(WINDOWa)
RETURN(2)
Case Stat_Msg = 4
Return( 0 )
Otherwise
Return( 2 )
EndCase
****************************
FUNCTION LOOKUP2
PARAMETER Stat_Msg, Element, Rel_Pos
Do Case
Case Stat_Msg = 0 && IDLE
Return( 2 )
Case Stat_Msg = 1 && PAST TOP
Tone( 100, .1 )
Return( 2 )
Case Stat_Msg = 2 && PAST END
Tone( 100, .1 )
Return( 2 )
Case LASTKEY()=27
RETURN(0)
CASE LASTKEY()=13
WINDOWa=MKWINDOW(17,5,21,31)
CTYPE_VAL=CityType(SUBSTR(CITIES[ELEMENT],2,28),ZIP)
DO CASE
CASE CTYPE_VAL=1
@ 18,11 SAY "Dominant City"
@ 19,11 SAY " Name (1)"
CASE CTYPE_VAL=2
@ 18,10 SAY "Abbreviation of"
@ 19,10 SAY "a Dominant (2)"
CASE CTYPE_VAL=3
@ 18,9 SAY " Dominant that has"
@ 19,9 SAY "an abbreviation (3)"
CASE CTYPE_VAL=4
@ 18,9 SAY "City name that has"
@ 19,9 SAY "equal alternate (4)"
CASE CTYPE_VAL=5
@ 18,12 SAY "Non-dominate"
@ 19,12 SAY "city name (5)"
CASE CTYPE_VAL=6
@ 18,10 SAY " Abbreviation of"
@ 19,10 SAY "a non-dominant (6)"
CASE CTYPE_VAL=7
@ 18, 9 SAY "non-dominant that has"
@ 19,10 SAY " an Abbreviation (7)"
CASE CTYPE_VAL=17
@ 18,10 SAY " Abbreviation or"
@ 19,10 SAY "a non-dominant (17)"
OTHERWISE
@ 18,10 SAY "UNKNOWN CITY TYPE"
@ 19,10 SAY " CODE = "+STR(CTYPE_VAL,2,0)
CITYCOUNT=0
ENDCASE
INKEY(0)
KLWINDOW(WINDOWa)
RETURN(2)
Case Stat_Msg = 4
Return( 0 )
Otherwise
Return( 2 )
EndCase
*!*********************************************************************
*!
*! Function: FILLSCRN()
*!
*!*********************************************************************
FUNCTION fillscrn
PARAM f_urow,f_ucol,f_lrow,f_lcol,f_char
FOR I=f_urow TO f_lrow
@ I,f_ucol SAY REPLICATE(f_char,f_lcol-f_ucol+1)
NEXT
RETURN(.T.)
*!*********************************************************************
*!
*! Function: MKWINDOW()
*!
*!*********************************************************************
FUNCTION mkwindow
PARAM w_urow,w_ucol,w_lrow,w_lcol,w_boxtyp,w_title
if PCOUNT()<6
w_title=''
endif
if PCOUNT()<5
w_boxtyp='S'
endif
w_retval = savescreen(w_urow,w_ucol,w_lrow+1,w_lcol+2)
w_retval = CHR(w_urow)+CHR(w_ucol)+CHR(w_lrow+1)+CHR(w_lcol+2)+w_retval
windshdw(w_urow+1,w_ucol+2,w_lrow+1,w_lcol+2,iif(iscolor(),1,7))
@ w_urow,w_ucol CLEAR TO w_lrow,w_lcol
if w_boxtyp='D'
@ w_urow,w_ucol TO w_lrow,w_lcol double
else
@ w_urow,w_ucol TO w_lrow,w_lcol
endif
if len(w_title)#0
w_dchars = '╠═╣'
w_schars = '├─┤'
@ w_urow+2,w_ucol say left(w_&w_boxtyp.chars,1)+replicate(substr(w_&w_boxtyp.chars,2,1),w_lcol-w_ucol-1)+right(w_&w_boxtyp.chars,1)
@ w_urow+1,w_ucol+(w_lcol-w_ucol-len(w_title))/2 say w_title
endif
RETURN(w_retval)
*!*********************************************************************
*!
*! Function: KLWINDOW()
*!
*!*********************************************************************
FUNCTION klwindow
PARAM k_str
k_urow = ASC(SUBSTR(k_str,1,1))
k_ucol = ASC(SUBSTR(k_str,2,1))
k_lrow = ASC(SUBSTR(k_str,3,1))
k_lcol = ASC(SUBSTR(k_str,4,1))
k_scrn = SUBSTR(k_str,5)
restscreen(k_urow,k_ucol,k_lrow,k_lcol,k_scrn)
RETURN(.T.)